package licola.demo.com.huabandemo.Observable; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import licola.demo.com.huabandemo.Util.Logger; import rx.Observable; import rx.Subscriber; import rx.android.MainThreadSubscription; import static com.jakewharton.rxbinding.internal.Preconditions.checkUiThread; /** * Created by LiCola on 2016/04/10 15:39 */ public class AnimatorOnSubscribe implements Observable.OnSubscribe<Void> { final Animator animator; //构造器传入Animator public AnimatorOnSubscribe(Animator animator) { this.animator = animator; } @Override public void call(final Subscriber<? super Void> subscriber) { checkUiThread(); AnimatorListenerAdapter adapter=new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); subscriber.onNext(null); Logger.d("onAnimationStart"); } @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); subscriber.onCompleted(); Logger.d("onAnimationEnd"); } }; animator.addListener(adapter); animator.start();//先绑定监听器再开始 // subscriber.add(new MainThreadSubscription() { // @Override protected void onUnsubscribe() { // animator.removeAllListeners(); // } // }); } }